//
// @Auther: by wujehy 
// @Email:wujehy@qq.com
// @Data:20-1-15
// @Time:上午10:51
//

#include <iostream>
#include "FileConfig.h"

int main() {
    // 实例化默认对象
    FileConfig config;

    // 指定配置文件
    FileConfig config1("testMyFile.json");
    // 读取
    std::string strData;
    if (config.Read("/root/key", strData) == EXIT_SUCCESS) {
        //读取成功
        std::cout << "/root/key : " << strData << std::endl;
    } else {
        std::cout << "not found Data in default" << std::endl;
    }

    // 写入 数据,默认不直接保存
    if (config.Write("/root/strData", "dataStr1") == EXIT_SUCCESS) {
        std::cout << "Write /root/strData success ,but not save" << std::endl;
    } else {
        std::cout << "Write /root/strData fail" << std::endl;
    }

    // 写入 数据,并保存 ,此时 会将 内存中的所有数据保存到本地
    if (config.Write("/root/strData2", "dataStr2", true) == EXIT_SUCCESS) {
        std::cout << "Write /root/strData2 success and save" << std::endl;
    } else {
        std::cout << "Write /root/strData2 fail" << std::endl;
    }

    // 写入 数据到config1 的对象 ,并保存 ,此时 会将 内存中的所有数据保存到本地
    if (config1.Write("/root/strData2", "dataStr2", true) == EXIT_SUCCESS) {
        std::cout << "Write /root/strData2 success and save" << std::endl;
    } else {
        std::cout << "Write /root/strData2 fail" << std::endl;
    }


    // 写入 数据到 config1 ,默认不直接保存
    if (config1.Write("/root/strData", "dataStr1", false) == EXIT_SUCCESS) {
        std::cout << "Write /root/strData success ,but not save" << std::endl;
    } else {
        std::cout << "Write /root/strData fail" << std::endl;
    }
    //此时切换 会舍弃 上一个 为保存的记录
    config1.changePath("test2.json");
    // 对象切换到 新的文件
    if (config1.Write("/root/strData", "dataStr1") == EXIT_SUCCESS) {
        std::cout << "Write /root/strData success ,but not save" << std::endl;
    } else {
        std::cout << "Write /root/strData fail" << std::endl;
    }
    config1.changePath("test3.json", true);
    // 此时上一个 配置文件已经 保存 可以进行 新的操作

    if (config1.Write("/root/strData2", "dataStr2", true) == EXIT_SUCCESS) {
        std::cout << "Write /root/strData2 success and save" << std::endl;
    } else {
        std::cout << "Write /root/strData2 fail" << std::endl;
    }
    return 0;
}
